package com.example.emos.wx.checkin.task;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

import java.io.Serializable;

/**
 * 邮箱执行的任务类
 *
 * @Author YinXi
 * @Versin 1.0.0
 * @Date 2023/8/9
 */
@Component
//需要多例才能执行多线程，否则会出现线程安全问题
@Scope("prototype")
//所有的线程任务类需要实现序列化接口
public class EmailTask implements Serializable {
//  Java发送邮件
    @Autowired
    private JavaMailSender javaMailSender;
//    发件人
    @Value("${emos.email.system}")
    private String mailbox;
//    让方法异步执行
    @Async
    public void sendAsync(SimpleMailMessage message){
//        设置发件人
        message.setFrom(mailbox);
//        现在使用的是163这个SMTP服务器有时候往外界发送邮件会被认为是垃圾邮件，为了避免其把邮件拦截下来，那么就需要把邮件重新抄写给自己即可
        message.setCc(mailbox);
//        发送邮件
        javaMailSender.send(message);
    }
}
